home *** CD-ROM | disk | FTP | other *** search
/ Software 2000 / Software 2000 Volume 1 (Disc 2 of 2).iso / c64-games.disk / b1bomber.d64 / b-1 bomber (.txt)
Encoding:
Commodore BASIC  |  1995-01-01  |  7.8 KB  |  257 lines

  1. 5 N0=10:N1=20:N2=N0+N1
  2. 10 DIMC$(12),C(10,2),N$(N2),T(N2,3),M$(1)
  3. 20 PRINT"[147]";TAB(9);"** B-1 BOMBER GAME **":PRINT
  4. 25 PRINTTAB(10);"COPYRIGHT 1980 BY":PRINT:PRINTTAB(13);"AVALON HILL"
  5. 27 PRINTTAB(9);"MICROCOMPUTER GAMES"
  6. 30 FORI=1TO12:READC$(I):NEXT
  7. 35 DATAAU,EC,EV,PH,NA,AL,CO,ST,RA,SE,AR,BO
  8. 40 FORI=1TON2:READN$(I),T(I,1),T(I,2):NEXT
  9. 45 N$(0)="THULE AFB":T(0,1)=0:T(0,2)=0
  10. 50 DATAARKHANGELSK,8261,5922,ASTRAKHAN',8631,7947,KIYEV,7391,7467
  11. 55 DATALENINGRAD,7661,6427,MOSKVA,7956,6937,MURMANSK,8056,5452
  12. 60 DATASEVASTOPOL,7506,8152,SVERDLOVSK,9311,6682,VOLGOGRAD,8331,7692
  13. 65 DATAYEREVAN,8381,8657
  14. 70 DATADUBOVKA,8350,7650,KHAR'KOV,8850,7450,KONOSHA,8153,6325
  15. 75 DATALIPETSK,8100,7210,OCHAMCHIRA,8060,8400,ODESSA,7230,8050
  16. 80 DATAONEGA,8147,5976,PECHENGA,7976,5410,PINSK,7115,7235
  17. 82 DATAPODOL'SK,7900,7010,PSKOV,7475,6780,ROSTOV,7990,8010
  18. 84 DATASARPA,8515,7930,SYKTYVKAR,8825,6200,TALLINN,7060,6415
  19. 86 DATATBILISI,8415,8435,UKHTA,8960,5925,VINNITSA,7200,7585,VYBORG,7575,6300
  20. 90 DATAYARAN'SK,8575,6740
  21. 100 A9=25000:A0=100:C0=10:S=4500:P=6:F9=0:T=0:E=1.75
  22. 105 M$(0)="SAM":M$(1)="MIG"
  23. 110 X=5500+RND(0)*1500:Y=3500+RND(0)*1000
  24. 120 FORI=1TON2:T(I,3)=0:NEXT:A=INT(25000*RND(0)):A1=A:R9=0
  25. 130 C=INT(RND(0)*360):C1=C:T9=INT(RND(0)*N0+1):T8=0:F=18500
  26. 140 FORI=1TO10:C(I,1)=0:NEXT:F$="":FORI=1TO5
  27. 150 F$=F$+CHR$(INT(RND(0)*26)+65):NEXT:L9=.3:PRINT""
  28. 160 PRINT"YOU ARE FLYING A B1 BOMBER OUT OF"
  29. 161 PRINT"THULE AFB. YOU ARE IN AN ALERT STATUS"
  30. 162 PRINT"ORBITING OVER THE ARCTIC":PRINT:FORI=1TO6000:NEXT
  31. 180 PRINT"*****[146] FLASH *****":PRINT"HOT WAR HOT WAR HOT WAR[146]"
  32. 190 PRINT:PRINT"YOUR PRIMARY TARGET IS ";N$(T9);"."
  33. 192 PRINT"YOUR FAIL SAFE CODE IS ";F$;"[146].":PRINT
  34. 200 PRINT"YOUR ALTERNATES ARE:":J=0:FORI=1TON0:IFI=T9THEN230
  35. 210 J=J+1:PRINTTAB(12*(J-1)+1);N$(I);:IFJ<3THEN230
  36. 220 J=0:IFI<9THENPRINT
  37. 230 NEXT:PRINT:PRINT
  38. 240 PRINT"SOVIET DEFENSE COMPLEXES ARE:"
  39. 250 J=0:FORI=N0+1TON2:J=J+1
  40. 260 PRINTTAB(12*(J-1)+1);N$(I);:IFJ<3THEN280
  41. 270 J=0:PRINT
  42. 280 NEXT:PRINT:PRINT:PRINT"GOOD LUCK!"
  43. 290 GOSUB670:INPUT"COMMAND";A$:IFLEN(A$)<2THEN310
  44. 295 CM=0
  45. 300 FORI=1TO12:IFLEFT$(A$,2)=C$(I)THENCM=I
  46. 305 NEXT:IFCM>0THEN350
  47. 310 PRINT"LEGAL COMMANDS ARE:":PRINT"CO TO CHANGE COURSE"
  48. 311 PRINT"AL TO CHANGE ALTITUDE":PRINT"ST TO GET A STATUS REPORT"
  49. 312 PRINT"RA TO GET A RADAR REPORT":PRINT"NA TO GET NAVIGATION DATA"
  50. 313 PRINT"SE TO SEARCH FOR A DEFENSE COMPLEX"
  51. 314 PRINT"AU TO HAVE AUTOPILOT FLY PLANE"
  52. 315 PRINT"EV TO CONDUCT EVASIVE ACTION"
  53. 316 PRINT"EC TO USE ECM"
  54. 317 PRINT"PH TO LAUNCH PHOENIX MISSILE"
  55. 318 PRINT"AR TO ARM BOMB"
  56. 319 PRINT"BO TO DROP BOMB":T0=T+3+INT(5*RND(0)):GOTO1020
  57. 350 ONCMGOTO430,970,740,820,560,360,380,700,650,610,390,470
  58. 360 INPUT"NEW ALTITUDE";A1:IFA1>A9THENA1=A9
  59. 361 IFA1<A0THENA1=A0
  60. 370 T0=T+13+INT(15*RND(0)):GOTO1020
  61. 380 INPUT"NEW COURSE";C1:GOTO370
  62. 390 IFF9=2THEN420
  63. 391 INPUT"FAIL SAFE CODE";A$:IFA$=F$THENF9=1
  64. 400 IFF9=0THEN410
  65. 401 PRINT"BOMB ARMED.":L9=10*L9:GOTO370
  66. 410 PRINT"WRONG CODE.":GOTO370
  67. 420 PRINT"BOMB ALREADY DROPPED.":GOTO370
  68. 430 PRINT"TIME FOR AUTOPILOT (S,M,H)? ";:A$=" "
  69. 431 GETB$:IFB$=""THEN431
  70. 432 PRINTB$;:IFASC(B$)=13THEN439
  71. 433 IFASC(B$)<>20THENA$=A$+B$:GOTO431
  72. 434 IF((ASC(B$)=20)AND(LEN(A$)>1))THENA$=LEFT$(A$,LEN(A$)-1)
  73. 435 GOTO431
  74. 439 A$=A$+" ":I=0:J=0:K=0
  75. 440 IFA$=" "THEN460
  76. 441 I=VAL(A$):GOSUB1650:IFA$=" "THEN460
  77. 450 J=VAL(A$):GOSUB1650:IFA$=" "THEN460
  78. 455 K=VAL(A$)
  79. 460 I=-I*(I>0):J=-J*(J>0):K=-K*(K>0):T2=T+I+60*J+3600*K:GOTO1020
  80. 470 IFF9=2THEN420
  81. 471 IFF9=0THEN530
  82. 472 INPUT"TARGET";A$
  83. 480 IFLEN(A$)<2THEN540
  84. 481 A$=LEFT$(A$,2):GOSUB1760:IF((NN=-1)OR(NN>N0))THEN540
  85. 490 GOSUB1710:IFRA>250THEN550
  86. 491 INPUT"CONFIRM DROP (Y/N)";A$
  87. 500 IFA$<>"Y"THEN370
  88. 501 FORI=1TO1500:NEXT:PRINTN$(NN);" DESTROYED."
  89. 510 L9=L9/15
  90. 520 T8=NN:S=S+250:A0=A0+50:F9=2:T0=T+3+INT(5*RND(0)):GOTO1020
  91. 530 PRINT"BOMB NOT ARMED.":GOTO370
  92. 540 PRINT"IMPROPER TARGET.":GOTO370
  93. 550 PRINTN$(NN);" NOT IN RANGE.":GOTO370
  94. 560 INPUT"WHERE TO";A$:IFLEN(A$)<2THEN600
  95. 561 A$=LEFT$(A$,2)
  96. 570 GOSUB1760:IFNN=-1THEN600
  97. 580 GOSUB1710:GOSUB1600
  98. 581 PRINTN$(NN);" BEARS";INT(AN*10)/10;"T RANGE";INT(RA);"KM."
  99. 590 T0=T+40+INT(41*RND(0)):GOTO1020
  100. 600 PRINT"NOT ON THE MAP.":GOTO590
  101. 610 I=0:J=1E4:FORNN=N0+1TON2:GOSUB1710:IFRA>JTHEN640
  102. 620 IFT(NN,3)=2THEN640
  103. 630 GOSUB1600:IFABS(C-AN)>45ANDABS(C-AN)<315THEN640
  104. 631 J=RA:I=NN
  105. 640 NEXT:NN=I:IFNN>0THEN580
  106. 641 PRINT"NO COMPLEX FOUND.":GOTO590
  107. 650 PRINT"CONTACTS:":GOSUB670:IFJ=0THENPRINT"   NO CONACTS."
  108. 660 T0=T+5+INT(RND(0)*11):GOTO1020
  109. 670 J=0:FORI=1TO10:IFC(I,1)=0THEN690
  110. 671 J=1
  111. 680 PRINTM$(-(C(I,1)>10));"-";C(I,1);"INTERCEPTS IN";C(I,2)-T;"SECONDS."
  112. 690 NEXT:RETURN
  113. 700 PRINT"COURSE";INT(C);"T     SPEED";S;"KPH"
  114. 710 PRINT"ALTITUDE";A;"M FUEL";F;"KM"
  115. 720 IFF9<>2THENPRINT"PRIMARY TARGET: ";N$(T9)
  116. 730 PRINTP;"PHOENIX LEFT.":T0=T+20+INT(RND(0)*21):GOTO1020
  117. 740 A1=200+INT(300*RND(0)):IFRND(0)<.5THENA1=-A1
  118. 741 A=A+A1
  119. 750 IFA<0THEN1470
  120. 751 A1=A:C1=60+INT(60*RND(0))
  121. 760 IFRND(0)>.5THENC1=-C1
  122. 761 C=C+C1:C=C+360*(C>360)-360*(C<0)
  123. 770 C1=C:FORI=1TO10:IFC(I,1)=0THEN810
  124. 780 J=(8-2*(C(I,1)<10))/(C(I,2)-T):IFJ>.95THENJ=.95
  125. 790 IFRND(0)>JTHEN810
  126. 791 PRINTM$(-(C(I,1)>10));"-";C(I,1);"LOSES TARGET";
  127. 800 IFC(I,1)>10THENPRINT"  - RETURNS TO BASE";
  128. 801 PRINT".":C(I,1)=0
  129. 810 NEXT:T0=T+10+INT(21*RND(0)):GOTO1020
  130. 820 IFP=0THEN870
  131. 821 INPUT"PHOENIX MISSILE ARMED. TARGET";A$
  132. 822 IFLEN(A$)>3THENA$=LEFT$(A$,3)
  133. 830 IFA$="M"ORA$="MIG"ORA$="S"ORA$="SAM"THEN900
  134. 831 IFA$="N"ORA$="NONE"THEN880
  135. 832 IFLEN(A$)<2THEN880
  136. 833 A$=LEFT$(A$,2):GOSUB1760
  137. 840 IFNN<N0+1THEN880
  138. 841 GOSUB1710:IFRA>200THEN890
  139. 842 PRINT"PHOENIX AWAY!"
  140. 850 PRINTN$(NN);" DEFENSE COMPLEX DESTROYED.":T(NN,3)=2:P=P-1
  141. 860 T0=T+3+INT(5*RND(0)):GOTO1020
  142. 870 PRINT"NO MORE MISSILES!":GOTO860
  143. 880 PRINT"INVALID TARGET.":GOTO860
  144. 890 PRINTN$(NN);" OUT OF RANGE.":GOTO860
  145. 900 J=1E4:K=0:FORI=1TO10:IFC(I,1)=0THEN920
  146. 910 IFC(I,2)-T>JTHEN920
  147. 911 J=C(I,2)-T:K=I
  148. 920 NEXT:PRINT"PHOENIX AWAY!":P=P-1:IFK=0THEN960
  149. 930 IFJ>10THEN960
  150. 931 IFC(K,1)<10ANDRND(0)>.6THEN960
  151. 940 IFC(K,1)>10ANDRND(0)>.85THEN960
  152. 941 PRINTM$(-(C(K,1)>10));"-";C(K,1);"DESTROYED!"
  153. 950 C(K,1)=0:GOTO860
  154. 960 PRINT"MISSED!":GOTO860
  155. 970 FORI=1TO10:IFC(I,1)=0THEN1010
  156. 971 J=E*(.5+5/(C(I,2)-T))
  157. 980 IFJ>.97THENJ=.97
  158. 981 IFRND(0)>JTHEN1010
  159. 982 PRINTM$(-(C(I,1)>10));"-";C(I,1);
  160. 990 IFC(I,1)>10THENPRINT"LOSES TARGET - RETURNS TO BASE."
  161. 1000 IFC(I,1)<10THENPRINT" SELF DESTRUCTS."
  162. 1001 C(I,1)=0
  163. 1010 NEXT:E=E*(.7+.3*RND(0)):T0=T+3+INT(5*RND(0)):GOTO1020
  164. 1020 T3=T0:I9=1:IFT0>TTHEN1060
  165. 1021 I9=0:T3=INT(RND(0)*301)+T
  166. 1030 FORI=1TO10:IFC(I,1)=0THEN1050
  167. 1031 IFC(I,2)<T3THENT3=C(I,2)
  168. 1040 IFT>=C(I,2)-10THEN1050
  169. 1041 IFC(I,2)-10<T3THENT3=C(I,2)-10
  170. 1050 NEXT:IF(T2<=T)OR(T3<T2)THEN1060
  171. 1055 T3=T2:I9=1
  172. 1060 T0=T3-T:A2=A0*T0:C2=C0*T0
  173. 1070 IFA2>ABS(A-A1)THENA=A1
  174. 1071 IFA2<=ABS(A-A1)THENA=A+A2*SGN(A1-A)
  175. 1080 IFC2>ABS(-360*(ABS(C-C1)>180)-ABS(C-C1))THEN1100
  176. 1090 C=C+C2*SGN(C1-C):C=C-360*(C<0)+360*(C>360):GOTO1110
  177. 1100 C=C1
  178. 1110 X=X+S*T0*SIN(C*(null)/180)/3600
  179. 1120 F=F-INT(S*(T3-T)/3600)
  180. 1130 Y=Y-S*T0*COS(C*(null)/180)/3600:T=T3
  181. 1140 IFF<0THEN1490
  182. 1150 DE=0:CR=0:FORI=1TO10:IF(C(I,1)=0)OR(DE=1)OR(CR=1)THEN1210
  183. 1151 IFC(I,2)>TTHEN1200
  184. 1160 PRINT"NUCLEAR AIRBURST!!![146]":R9=1:C(I,1)=0:I9=1
  185. 1170 A=A+INT(3000*RND(0))*SGN(.5-RND(0)):IFA<0THENCR=1
  186. 1180 A1=A:F=INT(F*RND(0)):S=INT(S*(.5+.5*RND(0)))
  187. 1190 IFRND(0)<.15THENDE=1
  188. 1191 GOTO1210
  189. 1200 IFC(I,2)>T+10THEN1210
  190. 1201 PRINTM$(-(C(I,1)>10));"-";C(I,1);"IN PHOENIX RANGE.":I9=1
  191. 1210 NEXT:IFCR=1THEN1470
  192. 1211 IFDE=1THEN1480
  193. 1212 IFF9=2THEN1270
  194. 1220 FORNN=1TON0:GOSUB1710:IFRA>250THEN1240
  195. 1221 IFT(NN,3)<>0THEN1240
  196. 1230 PRINTN$(NN);" IN BOMB RANGE.":T(NN,3)=1:I9=1
  197. 1240 IFT(NN,3)<>1THEN1260
  198. 1241 IFRA<250THEN1260
  199. 1250 PRINTN$(NN);" NO LONGER IN BOMB RANGE.":T(NN,3)=0
  200. 1260 NEXT
  201. 1270 FORNN=N0+1TON2:IFT(NN,3)=2THEN1440
  202. 1280 IFABS(X-T(NN,1))>750THEN1440
  203. 1290 IFABS(Y-T(NN,2))>750THEN1440
  204. 1291 GOSUB1710:IFRA>750THEN1440
  205. 1300 IFRA>200ORP=0THEN1320
  206. 1301 IFT(NN,3)=1THEN1320
  207. 1302 T(NN,3)=1
  208. 1310 PRINTN$(NN);" BASE IN PHOENIX RANGE.":I9=1
  209. 1320 IFT(NN,3)<>1THEN1340
  210. 1321 IFRA<200THEN1340
  211. 1322 T(NN,3)=0
  212. 1330 PRINTN$(NN);" BASE OUT OF MISSILE RANGE."
  213. 1340 IFRND(0)>L9*(T0/300)*(A^.125)THEN1440
  214. 1350 J=0:FORK=1TO10:IFC(K,1)=0THENJ=K
  215. 1351 NEXT:IFJ=0THEN1440
  216. 1360 IFRND(0)>.5THEN1380
  217. 1370 C(J,1)=INT(9*RND(0)+1):M=6500:GOTO1390
  218. 1380 C(J,1)=21+2*INT(RND(0)*7):M=5000
  219. 1390 GOSUB1600:L=(AN-C)*(null)/180
  220. 1400 L=SQR(M*M-(S*SIN(L))^2)+SGN((null)-ABS(L))*ABS(S*COS(L))
  221. 1410 GOSUB1710:C(J,2)=T+INT((3600*RA/L)+1)
  222. 1420 PRINTN$(NN);" LAUNCHES A ";M$(-(C(J,1)>10));"-";C(J,1);"."
  223. 1430 I9=1
  224. 1440 NEXT:NN=0:GOSUB1600:GOSUB1710:L=ABS(C-AN)
  225. 1450 IF(L<30ORL>330)ANDRA<6500ANDT>2000THEN1500
  226. 1460 IFI9=1THEN290
  227. 1461 IFI9<>1THEN1020
  228. 1470 PRINT"B1 CRASHES INTO HILLSIDE.":R9=2:GOTO1510
  229. 1480 PRINT"B1 DESTROYED.":R9=2:GOTO1510
  230. 1490 PRINT"B1 RUNS OUT OF FUEL.":GOTO1470
  231. 1500 NN=0:GOSUB1710:IFRA<FTHEN1505
  232. 1501 PRINT"B1 REFUELS FROM TANKER AIRCRAFT.":FORI=1TO1500:NEXT
  233. 1505 PRINT"B1 LANDS AT THULE AFB."
  234. 1506 PRINT"MISSION COMPLETE."
  235. 1510 PRINT"MISSION SUMMARY:":IFT8=0THEN1540
  236. 1520 IFT8=T9THENPRINT"PRIMARY";
  237. 1530 IFT8<>T9THENPRINT"SECONDARY";
  238. 1535 PRINT" TARGET, ";N$(T8);" DESTROYED."
  239. 1540 PRINT"DEFENSE COMPLEXES DESTROYED:"
  240. 1550 J=0:FORI=N0+1TON2:IFT(I,3)<>2THEN1560
  241. 1551 PRINTTAB(4);N$(I):J=1
  242. 1560 NEXT:IFJ=0THENPRINTTAB(4);"NONE"
  243. 1570 IFR9=1THENPRINT"CREW WILL DIE FROM RADIATION EXPOSURE."
  244. 1580 IFR9=2THENPRINT"CREW DEAD."
  245. 1590 INPUT"GO AGAIN (Y/N)";A$:IFA$="Y"THEN100
  246. 1591 END
  247. 1600 DX=X-T(NN,1):DY=Y-T(NN,2)
  248. 1610 IFDY=0THENAN=90-180*(DX>0):RETURN
  249. 1620 AN=ATN(-DX/DY)*180/(null)-180*(DY<0)+360*(DX>0)*(DY>0):RETURN
  250. 1650 IFLEFT$(A$,1)=","THEN1670
  251. 1660 A$=RIGHT$(A$,LEN(A$)-1):IFLEN(A$)>1THEN1650
  252. 1665 A$="  "
  253. 1670 A$=RIGHT$(A$,LEN(A$)-1):RETURN
  254. 1710 RA=SQR((X-T(NN,1))^2+(Y-T(NN,2))^2):RETURN
  255. 1760 NN=-1:FORL=0TON2:IFA$=LEFT$(N$(L),2)THENNN=L
  256. 1770 NEXT:RETURN
  257.